/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package application;

import application.beans.CompteBean;
import application.beans.CoursBean;
import application.beans.MessageInterneBean;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Étienne
 */
class Compte {
    Integer idCompte;
    String nomComplet;
    String nom;
    String prenom;
    String username;
    String statut;
    String sexe;
    String actif;
    String codePermanent;
    String domaineEtude;
    String courriel;
    List<MessageInterne> messagesInternes;
    List<Cours> cours;

    public String getNomComplet() {
        return nomComplet;
    }

    public void setNomComplet(String nomComplet) {
        this.nomComplet = nomComplet;
    }

    public String getActif() {
        return actif;
    }

    public void setActif(String actif) {
        this.actif = actif;
    }

    public String getCodePermanent() {
        return codePermanent;
    }

    public void setCodePermanent(String codePermanent) {
        this.codePermanent = codePermanent;
    }

    public String getSexe() {
        return sexe;
    }

    public void setSexe(String sexe) {
        this.sexe = sexe;
    }

    public List<Cours> getCours() {
        return cours;
    }

    public void setCours(List<Cours> cours) {
        this.cours = cours;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getCourriel() {
        return courriel;
    }

    public void setCourriel(String courriel) {
        this.courriel = courriel;
    }

    public String getDomaineEtude() {
        return domaineEtude;
    }

    public void setDomaineEtude(String domaineEtude) {
        this.domaineEtude = domaineEtude;
    }

    public Integer getIdCompte() {
        return idCompte;
    }

    public void setIdCompte(Integer idCompte) {
        this.idCompte = idCompte;
    }

    public List<MessageInterne> getMessagesInternes() {
        return messagesInternes;
    }

    public void setMessagesInternes(List<MessageInterne> messagesInternes) {
        this.messagesInternes = messagesInternes;
    }

    public String getNom() {
        return nom;
    }

    public void setNom(String nom) {
        this.nom = nom;
    }

    public String getPrenom() {
        return prenom;
    }

    public void setPrenom(String prenom) {
        this.prenom = prenom;
    }

    public String getStatut() {
        return statut;
    }

    public void setStatut(String statut) {
        this.statut = statut;
    }
    
    public Compte ()
    {
        this.messagesInternes = new ArrayList<MessageInterne>();
        this.cours = new ArrayList<Cours>();
    }
    
    public Compte (Integer idCompte, String courriel, String domaineEtude, List<MessageInterne> messagesInternes, String nom, String prenom, String statut)
    {
        this.courriel = courriel;
        this.domaineEtude = domaineEtude;
        this.idCompte = idCompte;
        this.messagesInternes = messagesInternes;
        this.nom = nom;
        this.prenom = prenom;
        this.statut = statut;
    }
    
    /**
     * Méthode comme le asBean() mais pour éviter des boucles infinies du style:
     * le compte contient des cours, qui contient des comptes, qui contient
     * des cours...
     * @return 
     */
    public CompteBean getBean(){
        List<MessageInterneBean> mesIntBean = new ArrayList<MessageInterneBean>();
        List<CoursBean> lstCoursBean = new ArrayList<CoursBean>();
        
        CompteBean bean = new CompteBean(this.idCompte,this.nomComplet, this.nom, this.prenom,
                this.username, this.statut, this.sexe, this.actif, this.codePermanent, this.domaineEtude, this.courriel, mesIntBean, lstCoursBean);
        return bean;
    }
    
    /**
     * Méthode qui va créer un bean à partir des informations du compte présent
     * @return 
     */
    public CompteBean asBean(){
        List<MessageInterneBean> mesIntBean = new ArrayList<MessageInterneBean>();
        List<CoursBean> lstCoursBean = new ArrayList<CoursBean>();
        
        if(!(this.messagesInternes.isEmpty()))
        {
            for(MessageInterne mesInt:this.messagesInternes)
            {
                mesIntBean.add(mesInt.asBean());
            } 
        }
        
        if(!(this.cours.isEmpty()))
        {
            for(Cours lstCours:this.cours)
            {
                lstCoursBean.add(lstCours.getBean());
            } 
        }
        
        CompteBean bean = new CompteBean(this.idCompte,this.nomComplet, this.nom, this.prenom,
                this.username, this.statut, this.sexe, this.actif, this.codePermanent, this.domaineEtude, this.courriel, mesIntBean, lstCoursBean);
        return bean;
    }
    
    /**
     * Fonction qui compte le nombre de messages marqués comme non lus dans la 
     * liste des messages du compte présent.
     * @return le nombre de messages non lus
     */
    public Integer compterMessagesNonLus(){
        Integer nbNonLus = 0;
        
        for(MessageInterne mesInt:this.messagesInternes){
            if(mesInt.getMessageLu() == 'N'){
                nbNonLus++;
            }
        }
        
        return nbNonLus;
    }
}
